package com.rem.designPattern.designPrinciple.compositeReuse.improve;

/**
 * 设计模式七大原则--合成复用
 * 尽量使用合成/聚合的方式，而不是使用继承
 * <p>
 * 需求：B类需要使用A类的方法
 * <p>
 * 改进：通过聚合/组合的方式
 *
 * @author Rem
 * @date 2022-11-12
 */
public class CompositeReuse02 {

    public static void main(String[] args) {
        new B1().operation();
        new B2().operation(new A());
        new B3().operation();
    }
}

class A {
    void operation() {
        System.out.println("hello");
    }
}

class B1 {
    void operation() {
        A a = new A();
        a.operation();
    }
}

class B2 {
    void operation(A a) {
        a.operation();
    }
}

class B3 {
    A a;

    public B3() {
        a = new A();
    }

    void operation() {
        a.operation();
    }
}